/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.svh.Entidad;

import com.svh.Utils.Utilitario;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Transient;

/**
 *
 * @author Luis Alonso Ballena Garcia
 */
@Entity
@Table(name = "detalle_pedido")
public class DetallePedido implements Serializable {

    @Id
    @GeneratedValue
    @Column(name = "idDetallePedido")
    Integer id;

    @Column(name = "peso_pedido")
    Double pesoPedido;

    @Column(name = "peso_enviada")
    Double pesoEnviado;

    @Column(name = "precio")
    Double precio;

    @Column(name = "cantidad")
    Integer cantidad;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "idPedido", nullable = false)
    Pedido pedido;
    
    @ManyToOne(fetch = FetchType.EAGER)
    @JoinColumn(name = "idSubtipo", nullable = false)
    SubtipoProductoMarca subtipo;
    
    @Transient
    Double costo;
    
    @Transient
    Double costoEnvio;
    
    @Transient
    String pesoEnviado_aux;

    public DetallePedido() {
    }

    /**
     * GETTERS AND SETTERS *
     */
    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public Double getPesoPedido() {
        return pesoPedido;
    }

    public void setPesoPedido(Double pesoPedido) {
        this.pesoPedido = pesoPedido;
    }

    public Double getPesoEnviado() {
        return pesoEnviado;
    }

    public void setPesoEnviado(Double pesoEnviado) {
        this.pesoEnviado = pesoEnviado;
    }

    public Double getPrecio() {
        return precio;
    }

    public void setPrecio(Double precio) {
        this.precio = precio;
    }

    public Integer getCantidad() {
        return cantidad;
    }

    public void setCantidad(Integer cantidad) {
        this.cantidad = cantidad;
    }

    public Pedido getPedido() {
        return pedido;
    }

    public void setPedido(Pedido pedido) {
        this.pedido = pedido;
    }
    public SubtipoProductoMarca getSubtipo() {
        return subtipo;
    }

    public void setSubtipo(SubtipoProductoMarca subtipo) {
        this.subtipo = subtipo;
    }

    public Double getCosto() {
        costo = (double) (cantidad*precio);
        return costo;
    }

    public Double getCostoEnvio() {
        costoEnvio = (double) ((pesoEnviado_aux == null || Utilitario.esSoloDecimalPositivo(pesoEnviado_aux) ? 0 : Double.parseDouble(pesoEnviado_aux))*precio);
        return costoEnvio;
    }

    public String getPesoEnviado_aux() {
        return pesoEnviado_aux;
    }

    public void setPesoEnviado_aux(String pesoEnviado_aux) {
        this.pesoEnviado_aux = pesoEnviado_aux;
    }

}
